home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickTime / QuickTime 3 Interfaces & Libs / QTDevWin / CIncludes / DrawSprocket.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-21  |  12.8 KB  |  472 lines  |  [TEXT/dosa]

  1. /*
  2.      File:        DrawSprocket.h
  3.  
  4.      Contains:    Games Sprockets: DrawSprocket interfaces
  5.  
  6.      Version:    Technology:    Draw Sprocket 1.1.2
  7.                  Release:    QuickTime 3.0
  8.  
  9.      Copyright:    © 1996-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __DRAWSPROCKET__
  19. #define __DRAWSPROCKET__
  20.  
  21. #ifndef __MACTYPES__
  22. #include <MacTypes.h>
  23. #endif
  24. #ifndef __EVENTS__
  25. #include <Events.h>
  26. #endif
  27. #ifndef __QUICKDRAW__
  28. #include <Quickdraw.h>
  29. #endif
  30. #ifndef __QDOFFSCREEN__
  31. #include <QDOffscreen.h>
  32. #endif
  33. #ifndef __DISPLAYS__
  34. #include <Displays.h>
  35. #endif
  36.  
  37.  
  38.  
  39. #if PRAGMA_ONCE
  40. #pragma once
  41. #endif
  42.  
  43. #ifdef __cplusplus
  44. extern "C" {
  45. #endif
  46.  
  47. #if PRAGMA_IMPORT
  48. #pragma import on
  49. #endif
  50.  
  51. #if PRAGMA_STRUCT_ALIGN
  52.     #pragma options align=power
  53. #elif PRAGMA_STRUCT_PACKPUSH
  54.     #pragma pack(push, 2)
  55. #elif PRAGMA_STRUCT_PACK
  56.     #pragma pack(2)
  57. #endif
  58.  
  59. #if PRAGMA_ENUM_ALWAYSINT
  60.     #pragma enumsalwaysint on
  61. #elif PRAGMA_ENUM_OPTIONS
  62.     #pragma option enum=int
  63. #elif PRAGMA_ENUM_PACK
  64.     #if __option(pack_enums)
  65.         #define PRAGMA_ENUM_PACK__DRAWSPROCKET__
  66.     #endif
  67.     #pragma options(!pack_enums)
  68. #endif
  69.  
  70. #if TARGET_RT_MAC_CFM
  71. /*
  72. ********************************************************************************
  73. ** error/warning codes
  74. ********************************************************************************
  75. */
  76.  
  77. enum {
  78.     kDSpNotInitializedErr        = -30440L,
  79.     kDSpSystemSWTooOldErr        = -30441L,
  80.     kDSpInvalidContextErr        = -30442L,
  81.     kDSpInvalidAttributesErr    = -30443L,
  82.     kDSpContextAlreadyReservedErr = -30444L,
  83.     kDSpContextNotReservedErr    = -30445L,
  84.     kDSpContextNotFoundErr        = -30446L,
  85.     kDSpFrameRateNotReadyErr    = -30447L,
  86.     kDSpConfirmSwitchWarning    = -30448L,
  87.     kDSpInternalErr                = -30449L,
  88.     kDSpStereoContextErr        = -30450L
  89. };
  90.  
  91. /*
  92. ********************************************************************************
  93. ** constants
  94. ********************************************************************************
  95. */
  96.  
  97. enum DSpDepthMask {
  98.     kDSpDepthMask_1                = 1 << 0,
  99.     kDSpDepthMask_2                = 1 << 1,
  100.     kDSpDepthMask_4                = 1 << 2,
  101.     kDSpDepthMask_8                = 1 << 3,
  102.     kDSpDepthMask_16            = 1 << 4,
  103.     kDSpDepthMask_32            = 1 << 5,
  104.     kDSpDepthMask_All            = -1L
  105. };
  106. typedef enum DSpDepthMask DSpDepthMask;
  107.  
  108.  
  109. enum DSpColorNeeds {
  110.     kDSpColorNeeds_DontCare        = 0L,
  111.     kDSpColorNeeds_Request        = 1L,
  112.     kDSpColorNeeds_Require        = 2L
  113. };
  114. typedef enum DSpColorNeeds DSpColorNeeds;
  115.  
  116.  
  117. enum DSpContextState {
  118.     kDSpContextState_Active        = 0L,
  119.     kDSpContextState_Paused        = 1L,
  120.     kDSpContextState_Inactive    = 2L
  121. };
  122. typedef enum DSpContextState DSpContextState;
  123.  
  124. /* kDSpContextOption_QD3DAccel not yet implemented */
  125.  
  126. enum DSpContextOption {
  127.                                                                 /*    kDSpContextOption_QD3DAccel        = 1<<0,*/
  128.     kDSpContextOption_PageFlip    = 1 << 1,
  129.     kDSpContextOption_DontSyncVBL = 1 << 2,
  130.     kDSpContextOption_Stereoscopic = 1 << 3
  131. };
  132. typedef enum DSpContextOption DSpContextOption;
  133.  
  134.  
  135. enum DSpAltBufferOption {
  136.     kDSpAltBufferOption_RowBytesEqualsWidth = 1 << 0
  137. };
  138. typedef enum DSpAltBufferOption DSpAltBufferOption;
  139.  
  140.  
  141. enum DSpBufferKind {
  142.     kDSpBufferKind_Normal        = 0,
  143.     kDSpBufferKind_LeftEye        = 0,
  144.     kDSpBufferKind_RightEye        = 1
  145. };
  146. typedef enum DSpBufferKind DSpBufferKind;
  147.  
  148.  
  149. enum DSpBlitMode {
  150.     kDSpBlitMode_SrcKey            = 1 << 0,
  151.     kDSpBlitMode_DstKey            = 1 << 1,
  152.     kDSpBlitMode_Interpolation    = 1 << 2
  153. };
  154. typedef enum DSpBlitMode DSpBlitMode;
  155.  
  156. /*
  157. ********************************************************************************
  158. ** data types
  159. ********************************************************************************
  160. */
  161. typedef struct OpaqueDSpAltBufferReference*  DSpAltBufferReference;
  162. typedef struct OpaqueDSpContextReference*  DSpContextReference;
  163. #define kDSpEveryContext ((DSpContextReference)NULL)
  164. typedef CALLBACK_API_C( Boolean , DSpEventProcPtr )(EventRecord *inEvent);
  165. typedef CALLBACK_API_C( Boolean , DSpCallbackProcPtr )(DSpContextReference inContext, void *inRefCon);
  166.  
  167. struct DSpContextAttributes {
  168.     Fixed                             frequency;
  169.     UInt32                             displayWidth;
  170.     UInt32                             displayHeight;
  171.     UInt32                             reserved1;
  172.     UInt32                             reserved2;
  173.     UInt32                             colorNeeds;
  174.     CTabHandle                         colorTable;
  175.     OptionBits                         contextOptions;
  176.     OptionBits                         backBufferDepthMask;
  177.     OptionBits                         displayDepthMask;
  178.     UInt32                             backBufferBestDepth;
  179.     UInt32                             displayBestDepth;
  180.     UInt32                             pageCount;
  181.     char                             filler[3];
  182.     Boolean                         gameMustConfirmSwitch;
  183.     UInt32                             reserved3[4];
  184. };
  185. typedef struct DSpContextAttributes        DSpContextAttributes;
  186. typedef DSpContextAttributes *            DSpContextAttributesPtr;
  187.  
  188. struct DSpAltBufferAttributes {
  189.     UInt32                             width;
  190.     UInt32                             height;
  191.     DSpAltBufferOption                 options;
  192.     UInt32                             reserved[4];
  193. };
  194. typedef struct DSpAltBufferAttributes    DSpAltBufferAttributes;
  195. typedef struct DSpBlitInfo                 DSpBlitInfo;
  196. typedef CALLBACK_API_C( void , DSpBlitDoneProc )(DSpBlitInfo *info);
  197.  
  198. struct DSpBlitInfo {
  199.     Boolean                         completionFlag;
  200.     char                             filler[3];
  201.     DSpBlitDoneProc                 completionProc;
  202.     DSpContextReference             srcContext;
  203.     CGrafPtr                         srcBuffer;
  204.     Rect                             srcRect;
  205.     UInt32                             srcKey;
  206.  
  207.     DSpContextReference             dstContext;
  208.     CGrafPtr                         dstBuffer;
  209.     Rect                             dstRect;
  210.     UInt32                             dstKey;
  211.  
  212.     DSpBlitMode                     mode;
  213.     UInt32                             reserved[4];
  214. };
  215.  
  216.  
  217. typedef DSpBlitInfo *                    DSpBlitInfoPtr;
  218. /*
  219. ********************************************************************************
  220. ** function prototypes
  221. ********************************************************************************
  222. */
  223. /*
  224. ** global operations
  225. */
  226. EXTERN_API_C( OSStatus )
  227. DSpStartup                        (void);
  228.  
  229. EXTERN_API_C( OSStatus )
  230. DSpShutdown                        (void);
  231.  
  232. EXTERN_API_C( OSStatus )
  233. DSpGetFirstContext                (DisplayIDType             inDisplayID,
  234.                                  DSpContextReference *    outContext);
  235.  
  236. EXTERN_API_C( OSStatus )
  237. DSpGetNextContext                (DSpContextReference     inCurrentContext,
  238.                                  DSpContextReference *    outContext);
  239.  
  240. EXTERN_API_C( OSStatus )
  241. DSpFindBestContext                (DSpContextAttributesPtr  inDesiredAttributes,
  242.                                  DSpContextReference *    outContext);
  243.  
  244. EXTERN_API_C( OSStatus )
  245. DSpCanUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  246.                                  Boolean *                outUserCanSelectContext);
  247.  
  248. EXTERN_API_C( OSStatus )
  249. DSpUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  250.                                  DisplayIDType             inDialogDisplayLocation,
  251.                                  DSpEventProcPtr         inEventProc,
  252.                                  DSpContextReference *    outContext);
  253.  
  254. EXTERN_API_C( OSStatus )
  255. DSpProcessEvent                    (EventRecord *            inEvent,
  256.                                  Boolean *                outEventWasProcessed);
  257.  
  258. EXTERN_API_C( OSStatus )
  259. DSpSetBlankingColor                (const RGBColor *        inRGBColor);
  260.  
  261. EXTERN_API_C( OSStatus )
  262. DSpSetDebugMode                    (Boolean                 inDebugMode);
  263.  
  264. EXTERN_API_C( OSStatus )
  265. DSpFindContextFromPoint            (Point                     inGlobalPoint,
  266.                                  DSpContextReference *    outContext);
  267.  
  268. EXTERN_API_C( OSStatus )
  269. DSpGetMouse                        (Point *                outGlobalPoint);
  270.  
  271. /*
  272. ** alternate buffer operations
  273. */
  274. EXTERN_API_C( OSStatus )
  275. DSpAltBuffer_New                (DSpContextReference     inContext,
  276.                                  Boolean                 inVRAMBuffer,
  277.                                  DSpAltBufferAttributes * inAttributes,
  278.                                  DSpAltBufferReference * outAltBuffer);
  279.  
  280. EXTERN_API_C( OSStatus )
  281. DSpAltBuffer_Dispose            (DSpAltBufferReference     inAltBuffer);
  282.  
  283. EXTERN_API_C( OSStatus )
  284. DSpAltBuffer_InvalRect            (DSpAltBufferReference     inAltBuffer,
  285.                                  const Rect *            inInvalidRect);
  286.  
  287. EXTERN_API_C( OSStatus )
  288. DSpAltBuffer_GetCGrafPtr        (DSpAltBufferReference     inAltBuffer,
  289.                                  DSpBufferKind             inBufferKind,
  290.                                  CGrafPtr *                outCGrafPtr,
  291.                                  GDHandle *                outGDevice);
  292.  
  293. /*
  294. ** context operations
  295. */
  296. /* general */
  297. EXTERN_API_C( OSStatus )
  298. DSpContext_GetAttributes        (DSpContextReference     inContext,
  299.                                  DSpContextAttributesPtr  outAttributes);
  300.  
  301. EXTERN_API_C( OSStatus )
  302. DSpContext_Reserve                (DSpContextReference     inContext,
  303.                                  DSpContextAttributesPtr  inDesiredAttributes);
  304.  
  305. EXTERN_API_C( OSStatus )
  306. DSpContext_Release                (DSpContextReference     inContext);
  307.  
  308. EXTERN_API_C( OSStatus )
  309. DSpContext_GetDisplayID            (DSpContextReference     inContext,
  310.                                  DisplayIDType *        outDisplayID);
  311.  
  312. EXTERN_API_C( OSStatus )
  313. DSpContext_GlobalToLocal        (DSpContextReference     inContext,
  314.                                  Point *                ioPoint);
  315.  
  316. EXTERN_API_C( OSStatus )
  317. DSpContext_LocalToGlobal        (DSpContextReference     inContext,
  318.                                  Point *                ioPoint);
  319.  
  320. EXTERN_API_C( OSStatus )
  321. DSpContext_SetVBLProc            (DSpContextReference     inContext,
  322.                                  DSpCallbackProcPtr     inProcPtr,
  323.                                  void *                    inRefCon);
  324.  
  325. EXTERN_API_C( OSStatus )
  326. DSpContext_GetFlattenedSize        (DSpContextReference     inContext,
  327.                                  UInt32 *                outFlatContextSize);
  328.  
  329. EXTERN_API_C( OSStatus )
  330. DSpContext_Flatten                (DSpContextReference     inContext,
  331.                                  void *                    outFlatContext);
  332.  
  333. EXTERN_API_C( OSStatus )
  334. DSpContext_Restore                (void *                    inFlatContext,
  335.                                  DSpContextReference *    outRestoredContext);
  336.  
  337. EXTERN_API_C( OSStatus )
  338. DSpContext_GetMonitorFrequency    (DSpContextReference     inContext,
  339.                                  Fixed *                outFrequency);
  340.  
  341. EXTERN_API_C( OSStatus )
  342. DSpContext_SetMaxFrameRate        (DSpContextReference     inContext,
  343.                                  UInt32                 inMaxFPS);
  344.  
  345. EXTERN_API_C( OSStatus )
  346. DSpContext_GetMaxFrameRate        (DSpContextReference     inContext,
  347.                                  UInt32 *                outMaxFPS);
  348.  
  349. EXTERN_API_C( OSStatus )
  350. DSpContext_SetState                (DSpContextReference     inContext,
  351.                                  DSpContextState         inState);
  352.  
  353. EXTERN_API_C( OSStatus )
  354. DSpContext_GetState                (DSpContextReference     inContext,
  355.                                  DSpContextState *        outState);
  356.  
  357. EXTERN_API_C( OSStatus )
  358. DSpContext_IsBusy                (DSpContextReference     inContext,
  359.                                  Boolean *                outBusyFlag);
  360.  
  361. /* dirty rectangles */
  362. EXTERN_API_C( OSStatus )
  363. DSpContext_SetDirtyRectGridSize    (DSpContextReference     inContext,
  364.                                  UInt32                 inCellPixelWidth,
  365.                                  UInt32                 inCellPixelHeight);
  366.  
  367. EXTERN_API_C( OSStatus )
  368. DSpContext_GetDirtyRectGridSize    (DSpContextReference     inContext,
  369.                                  UInt32 *                outCellPixelWidth,
  370.                                  UInt32 *                outCellPixelHeight);
  371.  
  372. EXTERN_API_C( OSStatus )
  373. DSpContext_GetDirtyRectGridUnits (DSpContextReference     inContext,
  374.                                  UInt32 *                outCellPixelWidth,
  375.                                  UInt32 *                outCellPixelHeight);
  376.  
  377. EXTERN_API_C( OSStatus )
  378. DSpContext_InvalBackBufferRect    (DSpContextReference     inContext,
  379.                                  const Rect *            inRect);
  380.  
  381. /* underlays */
  382. EXTERN_API_C( OSStatus )
  383. DSpContext_SetUnderlayAltBuffer    (DSpContextReference     inContext,
  384.                                  DSpAltBufferReference     inNewUnderlay);
  385.  
  386. EXTERN_API_C( OSStatus )
  387. DSpContext_GetUnderlayAltBuffer    (DSpContextReference     inContext,
  388.                                  DSpAltBufferReference * outUnderlay);
  389.  
  390. /* gamma */
  391. EXTERN_API_C( OSStatus )
  392. DSpContext_FadeGammaOut            (DSpContextReference     inContext,
  393.                                  RGBColor *                inZeroIntensityColor);
  394.  
  395. EXTERN_API_C( OSStatus )
  396. DSpContext_FadeGammaIn            (DSpContextReference     inContext,
  397.                                  RGBColor *                inZeroIntensityColor);
  398.  
  399. EXTERN_API_C( OSStatus )
  400. DSpContext_FadeGamma            (DSpContextReference     inContext,
  401.                                  SInt32                 inPercentOfOriginalIntensity,
  402.                                  RGBColor *                inZeroIntensityColor);
  403.  
  404. /* buffering */
  405. EXTERN_API_C( OSStatus )
  406. DSpContext_SwapBuffers            (DSpContextReference     inContext,
  407.                                  DSpCallbackProcPtr     inBusyProc,
  408.                                  void *                    inUserRefCon);
  409.  
  410. EXTERN_API_C( OSStatus )
  411. DSpContext_GetBackBuffer        (DSpContextReference     inContext,
  412.                                  DSpBufferKind             inBufferKind,
  413.                                  CGrafPtr *                outBackBuffer);
  414.  
  415. EXTERN_API_C( OSStatus )
  416. DSpContext_GetFrontBuffer        (DSpContextReference     inContext,
  417.                                  CGrafPtr *                outFrontBuffer);
  418.  
  419. /* clut operations */
  420. EXTERN_API_C( OSStatus )
  421. DSpContext_SetCLUTEntries        (DSpContextReference     inContext,
  422.                                  const ColorSpec *        inEntries,
  423.                                  UInt16                 inStartingEntry,
  424.                                  UInt16                 inLastEntry);
  425.  
  426. EXTERN_API_C( OSStatus )
  427. DSpContext_GetCLUTEntries        (DSpContextReference     inContext,
  428.                                  ColorSpec *            outEntries,
  429.                                  UInt16                 inStartingEntry,
  430.                                  UInt16                 inLastEntry);
  431.  
  432. /* blit operations */
  433. EXTERN_API_C( OSStatus )
  434. DSpBlit_Faster                    (DSpBlitInfoPtr         inBlitInfo,
  435.                                  Boolean                 inAsyncFlag);
  436.  
  437. EXTERN_API_C( OSStatus )
  438. DSpBlit_Fastest                    (DSpBlitInfoPtr         inBlitInfo,
  439.                                  Boolean                 inAsyncFlag);
  440.  
  441. #endif  /* TARGET_RT_MAC_CFM */
  442.  
  443.  
  444. #if PRAGMA_ENUM_ALWAYSINT
  445.     #pragma enumsalwaysint reset
  446. #elif PRAGMA_ENUM_OPTIONS
  447.     #pragma option enum=reset
  448. #elif defined(PRAGMA_ENUM_PACK__DRAWSPROCKET__)
  449.     #pragma options(pack_enums)
  450. #endif
  451.  
  452. #if PRAGMA_STRUCT_ALIGN
  453.     #pragma options align=reset
  454. #elif PRAGMA_STRUCT_PACKPUSH
  455.     #pragma pack(pop)
  456. #elif PRAGMA_STRUCT_PACK
  457.     #pragma pack()
  458. #endif
  459.  
  460. #ifdef PRAGMA_IMPORT_OFF
  461. #pragma import off
  462. #elif PRAGMA_IMPORT
  463. #pragma import reset
  464. #endif
  465.  
  466. #ifdef __cplusplus
  467. }
  468. #endif
  469.  
  470. #endif /* __DRAWSPROCKET__ */
  471.  
  472.